# Clusters

A **cluster** in Plane refers to a pool of [drones](architecture.mdx). Using Plane requires at least
one cluster, but it is possible to have multiple in order to manage different pools of drones without
treating them as interchangeable.

For example, you might have some CPU-only drones, and some drones with GPUs. Clusters allow you to
manage both sets of drones from the same controller, while still having control over which set of drones
a particular session backend is run on.

Drones and proxy instances are associated with a single cluster, and are **not** shared between them.
This allows you to run each cluster on a different network or VPC.

## Cluster names

Clusters are identified by the hostname through which they will be accessed.

For example, when drones belonging to the cluster `c1.mysite.com` run backends, those backends will
be accessible through URLs that begin with `https://c1.mysite.com/...`.

Plane proxies associated with the `c1.mysite.com` will expect inbound traffic to have the `Host`
header `c1.mysite.com`, and will proxy it to the appropriate drone. It is up to you to configure
your DNS and/or load balancers so that inbound traffic actually arrives at the proxy
(see [deploying to production](../deploy-to-prod.mdx#proxies)).

### Non-HTTPS clusters (development only)

If a port is *not* specified in the cluster name (as in `c1.mysite.com`), Plane assumes that inbound
traffic will come over HTTPS on port 443. If a port is specified (as in `localhost:9090`),
Plane will assume that inbound traffic is **not** HTTPS, but raw HTTP, and will arrive on the
specified port. This is useful for testing locally without DNS or certificate configuration, and
is not intended for production use.

Since Plane uses the presence of a port in the cluster name to determine whether to use HTTPS or
HTTP, it is not currently possible to use HTTPS on a non-standard port.
